/**
 * 增加登录校验
 */
Vue.http.interceptors.push((request, next) => {
    next((response) => {
        if(response.status==200){//正常相应
            return response;
        }else if(response.status==401){
            new Vue({}).$alert('登录已过期，请重新登录', '提示', {
                callback:function(action, instance){
                    document.location.href="/site/login.action";
                }
            });
        }/*else if(response.status==403){
            new Vue({}).$alert('您没有权限操作此功能', '提示');
        }else if(response.status==500){
            new Vue({}).$alert('查询或更新操作异常(500)', '提示');
        }else if(response.status==502){
            new Vue({}).$alert('服务器网关超时(502)', '提示');
        }else if(response.status==503){
            new Vue({}).$alert('服务暂时不可用(503)', '提示');
        }else if(response.status==504){
            new Vue({}).$alert('查询或更新操作超时(504)', '提示');
        }else{
            new Vue({}).$alert('查询或更新操作失败,http状态代码:'+response.status, '提示');
        }*/
    });
});

(function(){
    Vue.http.options.emulateJSON = true;
    /*提供公用定义,方法*/
    Vue.extendData=function(config){
        if(config==null){
            new Vue({}).alert('参数 config is null');return config;
        }
        config.data=config.data||{};
        //分页相关属性
        config.data.page=config.data.page||{currentPage:1,pageSize:10,pageTotal:0,pageSizes:[10,20,30,50]};
        //当前选中行, 已选中行
        config.data.selectRow=config.data.selectRow||null;
        config.data.selectRowList=config.data.selectRowList||[];
        //日期选择控件设为只读
        config.data.datePickerEditable=config.data.datePickerEditable||false;
        //全局loading
        config.data.fullScreenLoading=config.data.fullScreenLoading||false;
        //下拉框可清空
        if(config.data.selectClearable==null){
            config.data.selectClearable=true;
        }
        if(config.data.selectFilterable==null){
            config.data.selectFilterable=true;
        }
        config.methods=config.methods||{};
        //更换页码回调函数
        config.methods.currentPageChange=config.methods.currentPageChange||function(val){
               this.page.currentPage = val;
            this.queryFormSearch();
           };
           //更换每页显示行数
           config.methods.pageSizeChange=config.methods.pageSizeChange||function(val){
               this.page.pageSize = val;
            this.queryFormSearch();
           };
           //重新排序回调函数
           config.methods.pageSortChange=config.methods.pageSortChange||function(column){
            this.queryForm.ecejOrderBy=(column.prop==null?"createTime:d":(column.prop+":"+(column.order==null||column.order=="ascending"?"a":"d")));
            this.queryFormSearch();
        };
        //选中行回调函数,单选回调
        config.methods.currentRowChange=config.methods.currentRowChange||function(val){
               this.selectRow = val;
           };
           //多选回调
           config.methods.multiRowSelect=config.methods.multiRowSelect||function(list){
               this.selectRowList=list;
           };
           config.methods.queryFormSearch=config.methods.queryFormSearch||function(){
               this.$alert('请实现 queryFormSearch函数','提示');
           };
           //格式化日期函数
           config.methods.formateDate=config.methods.formateDate||function(millisec){
               var text=this.formateDateTime(millisec);
               if(text!=null&&text.length>10){
                   text = text.substring(0,10);
               }
               return text;
        };
           //格式化日期时间函数
           config.methods.formateDateTime=config.methods.formateDateTime||function(millisec){
               if(millisec==null){
                   return null;
               }
            var ct;
               if(millisec.constructor==Date){//如果参数已经是Date直接使用
                   ct = millisec;
               }else if(millisec.constructor==Number){//参数是数字
                   ct = new Date();
                   ct.setTime(millisec);
               }else{//不支持的类型
                   return null;
               }
            var filleZero=function(i){return i<10?("0"+i):(""+i);};
            return ct.getFullYear()+"-"+filleZero(ct.getMonth()+1)+"-"+filleZero(ct.getDate())+" "+filleZero(ct.getHours())+":"+filleZero(ct.getMinutes())+":"+filleZero(ct.getSeconds());
        };
           //拷贝有效的属性值(source:来源对象, target:目标对象, propertyName:属性名称)
           config.methods.copyEffectiveProperty=config.methods.copyEffectiveProperty||function(source, target, propertyName){
               if(source!=null && target!=null && propertyName!=null){
                   if(source[propertyName]!=null && source[propertyName]!=""){
                       target[propertyName]=source[propertyName];
                   }
               }
           };
           //table表格格式化日期字段展示
           config.methods.tableColumnDateFormatter=config.methods.tableColumnDateFormatter||function(row,col){
               return this.formateDate(row[col.property]);
           };
           //table表格格式化日期时间字段展示
           config.methods.tableColumnDateTimeFormatter=config.methods.tableColumnDateTimeFormatter||function(row,col){
               return this.formateDateTime(row[col.property]);
           };
           return config;
    };
})();